配方数据文件按照标准 CSV 格式存储在 S7-1200 CPU 装载存储器或 S7-1200 SIMATIC 存储卡“程序卡”中。分别可通过 PLC Web 服务器或对于存储卡文件操作,将数据文件传送到 PC 进行管理和查看。也可将修改过后的配方数据文件上传至PLC,再通过“RecipeImport”配方导入指令更新PLC装载存储器中配方数据块的数值。
SIMATIC S7-1200 系列 CPU 使用配方数据功能,需要注意以下几点:
下面,举例说明用 S7-1200 实现配方的写入和读取功能。为方便配方数据操作,按照下图思路进行项目编程:
图1.配方项目框图
软件:STEP 7 Professional V13 SP1
硬件:CPU1215 C DC/DC/DC 订货号:6ES7 215-1AG40-0XB0
1.定义一个 PLC 数据类型
配方数据块必须包含一维数组,结构是 PLC 数据类型或结构。在这个配方实例中使用 PLC 数据类型创建配方数据块,其成分的数据类型在本例中选择是 DINT 数据类型。 成分数据类型也可以是除结构以外的任何混合数据类型(如 REAL 类型)。 在配方数据块数组元素中,不允许 PLC 数据类型中存在结构,也不允许结构中嵌套结构。
在此,创建一个 PLC 数据类型,以定义一个配方记录中的所有成分,如配方名称 Name 和各成分 A、B,见图 2 所示:
图2.定义 PLC 数据类型
数据类型是一个数据模板,它在每个配方数据块以及活动配方数据块中重复使用。输入所有实例配方共用的成分名称和数据类型,根据分配给配方成分的数值不同而产生不同的产品配方。
2.使用 PLC 数据类型创建配方数据块
创建一个配方数据块,为全局数据块,并启用数据块属性"仅存储在装载存储器中"。本例中,配方数据 DB 块名称为 “Recipe_backup”,插入数组类型变量,名称"Recipe",数据类型为Array of “数据类型”,本例中设置数组大小 4 即是可创建的配方的最大数目。
图3.创建配方数据块
图4.定义数据块属性
3.在工作存储器中创建活动配方 DB,并通过“READ_DBL”和“WRIT_DBL”指令实现对装载存储区配方数据块的读写操作
配方数据块"仅存储在装载存储器中",所以对此 DB 块(装载存储区数据)的读写操作均需要通过指令来实现,其指令位置如图 5 所示:
图5.“数据块控制”指令
因此,需要在工作存储器中准备一个活动配方数据块,用于配方数据的写入和读取。在本例中,分别为读、写装载存储区数据块的操作,在工作存储器中创建了两个全局数据块,且配方数组与配方数据块一致。如名称为“Recipe_read”和“Recipe_write”,其配方数组均为 Array [0..3] of "Recipe",如图 6 所示:
图6.用于“read”和“write”的活动配方数据块
将这两个 DB 块作为与装载存储器中配方数据块的接口,分别通过指令“WRIT_DBL”能实时将存于工作存储器的活动配方数据写入至装载存储器的配方数据块,或者通过指令“READ_DBL”实时读取装载存储器的配方数据块到工作存储区中活动配方数据。
4.创建用于设置配方数据的接口数据块,并用指令写入到活动配方 DB 中
考虑在实际应用中,不一定方便通过 Web 服务器等来直接更改配方文件中的数据,多采用触摸屏或者上位机软件对某一条数据配方进行操作。为此,分别建立写入配方的 ARRAY 和读取配方的 ARRAY,实际仅使用数组中的一个元素作为接口即可,即数组长度为1,如图 7 所示:
图7.用于设置配方数据的接口数据块
对于变址的数据传送,可利用简单的“MOVE”指令编写功能块来实现。在 FB 中定义接口变量,作为数组中某个元素的选择,该变量可以在外设中设置。若程序中需要使用某条配方记录,也可如此操作。对于写入和读取操作,分别建立 FB 程序,如下所示:
图8.FB1用于写入某条配方
图9.FB2用于读取某条配方
在 OB1 中条件调用功能块即可,指令的触发条件也可以通过外设控制。
5.启用 Web 服务器
使用"Recipe Export"指令将完整的配方记录导出,即生成为一个 CSV 文件。未使用的配方记录也被导出。可以通过 Web 服务器或者存储卡来查看配方文件。
按照以下路径和方法为要连接的 CPU 启用 Web 服务器:“设备视图”→“鼠标选中 CPU”→“属性”→“Web 服务器”→“启用模块上的 Web 服务器前打钩”。如下图 10 所示:
图10.启用 Web 服务器
使用管理员权限,或者建立一个用户账户,进行访问权限设置。读取和修改配方数据文件,需要具有“读取文件”和“写入/删除文件”功能。若要求更多访问功能,可以勾选相应权限。
6.实验例程
本例仅为实验测试,目的在于掌握配方函数功能,程序间相互连锁关系并未通过例程中设置。编程部分如下所示:
程序段1,可在外设上设置参数 X,为写入目标值。结合 FB1,即实现实时修改目标配方条目的功能。
程序段2,使用“WRIT_DBL”指令,将工作存储区的活动配方数据块“Recipe_write”写到装载存储器的配方数据块“Recipe_backup”中。
程序段3,使用“RecipeExport”指令将完整的配方记录导出,按照标准 CSV 格式存储在装载存储器中,名称与配方数据块名称相同。
程序段4,通过 Web 服务器更改配方文件中的数据后,已经从 PC 上传至 PLC 的装载存储器。再通过"RecipeImport"指令导入配方数据,即将装载存储器中的配方数据文件覆盖PLC的配方数据块。
程序段5,使用“WRIT_DBL”指令,将装载存储器的配方数据块“Recipe_backup”写到工作存储区的DB块“Recipe_read”中。
程序段6,可在外设上设置参数 Y,为读取目标值。结合 FB2,即实现实时读取目标配方条目的功能。这一功能方便在程序中调用某条配方数据用于生产使用。
图11.程序组图
7.使用 Web 服务器,或查看存储卡,浏览配方数据文件
详细操作步骤,请参见配方文件的使用说明。
8.修改配方 CSV 文件数据,并导入配方数据
可使用 ASCII 文本编辑器修改配方 CSV中的数值。 可以修改分配给成分的起始值,但不能修改数据类型或数据结构 。将修改的 CSV 文件从 PC 再次上传到 CPU。
但是,在 CPU Web 服务器允许上传操作之前,必须删除或重命名 CPU 装载存储器中的旧 CSV 文件(具有相同名称)。
将修改的 CSV 文件上传到 CPU 后,可以使用"Recipe Import"指令将新的起始值从修改的 CSV 文件(在 CPU 装载存储器中)传送到配方数据块(在 CPU 装载存储器中)。 导入操作由指令的"REQ"参数触发。 导入过程中,参数 BUSY 设置为"1"。执行该指令后,BUSY 将复位为"0",完成操作后,DONE 参数将指示为"1"。 如果执行期间出错,ERROR 和 STATUS 参数将发出信号加以指示。
9.修改 CSV 文件的规则
只有配方数据块中包含一个与 CSV 文件数据结构一致的结构,才能执行配方的导入操作。下面是修改 CSV 文件规则: